setwd("C:/Users/uus03/OneDrive/Desktop/ACTG/부분data결과")
setwd("C:/Users/uus03/OneDrive/Desktop/ACTG/ACTG_minidata")
setwd("C:/Users/uus03/OneDrive/Desktop/ACTGdata/ACTG_minidata")
source("utils.R")
df = readRDS("simulated_data/df.rds")
W = readRDS("simulated_data/W.rds")
Opt = Weight.via.Opt(df, W, method="KR25", delta=0.001, delta_prime=10, gamma=0.01)
Opt$finaldf
thresholds1 <- data.frame(
variable = c("X1", "X2", "X3"),#, "X4", "X5", "X6"),
lb = c(0.00, 0.00, 0.02),#, 0, 0, 0),   # 예시
ub = c(0.99, 0.95, 0.99)#, 0.95, 0.95, 0.95)
)
thresholds2 <- data.frame(
variable = c("X1", "X2", "X3", "X4", "X5", "X6"),
lb = c(0, 0.01, 0.02),#, 0, 0, 0),
ub = c(1, 0.99, 1)#, 0.95, 0.95, 0.99)
)
fairness_vis(Opt$final)
covbal_vis(Opt, subgroup.no = 1, thresholds1)
covbal_vis(Opt, subgroup.no = 2, thresholds2)
fairness_vis(Opt$final)
covbal_vis(Opt, subgroup.no = 1, thresholds1)
covbal_vis(Opt, subgroup.no = 2, thresholds2)
summary(df$Y)
Opt$tau1
Opt$tau2
Opt$taudiff
knitr::opts_chunk$set(echo = TRUE)
library(speff2trial)
source("C:/Users/uus03/OneDrive/Desktop/ACTGdata/utils.R")
data("ACTG175")
dforigin = ACTG175
setdf = dforigin[dforigin$r == 1,]
summary(setdf$cd496)
summmary(dforigin$cd496)
summary(dforigin$cd496)
# 🔹 변수 설정
setdf <- setdf %>% mutate(F = as.factor(race))
# 🔹 원본 데이터 race 비율 확인
original_counts <- table(setdf$race, setdf$treat)
original_ratio_treat0 <- original_counts[,1] / sum(original_counts[,1])
original_ratio_treat1 <- original_counts[,2] / sum(original_counts[,2])
# 🔹 `F ~ X1 + X2 + X3` 로지스틱 회귀 모델 생성
F_model <- glm(F ~ hemo + homo + drugs, data = setdf, family = binomial)
# 🔹 각 샘플의 `F=1`일 확률 (예측값) 계산
setdf$F_prob <- predict(F_model, type = "response")
# 🔹 `race`를 numeric으로 변환
setdf <- setdf %>% mutate(race_num = as.numeric(as.character(race)))
# 🔹 `race=1` 비율을 보정하여 원본 비율 유지
setdf_balanced <- setdf %>%
group_by(treat, race) %>%
mutate(sample_weight = ifelse(F == 1, F_prob * 1.5, (1 - F_prob) * 0.5)) %>%  # race=1에 가중치 증가
sample_n(size = min(n(), round(original_counts[race_num + 1, treat + 1] * 0.9)),
weight = sample_weight, replace = FALSE) %>%  # 개수 조정
ungroup()
# 🔹 샘플링 후 race 비율 확인
table(setdf_balanced$race, setdf_balanced$treat)
matched_counts <- table(setdf_balanced$race, setdf_balanced$treat)
matched_ratio_treat0 <- matched_counts[,1] / sum(matched_counts[,1])
matched_ratio_treat1 <- matched_counts[,2] / sum(matched_counts[,2])
# 🔹 비교 출력
print("Original race ratio (treat=0):")
print(original_ratio_treat0)
print("Matched race ratio (treat=0):")
print(matched_ratio_treat0)
print("Original race ratio (treat=1):")
print(original_ratio_treat1)
print("Matched race ratio (treat=1):")
print(matched_ratio_treat1)
setdf = setdf_balanced
A = setdf$treat
age = setdf$age
weight = setdf$wtkg
karnof = setdf$karnof
race = setdf$race
gender = setdf$gender
hemo = setdf$hemo
homo = setdf$homo
drugs = setdf$drugs
symptom = setdf$symptom
zprior = setdf$zprior
oprior = setdf$oprior
Y = setdf$cd496
preanti = setdf$preanti
str2 = setdf$str2
cd40 = setdf$cd40
cd820 = setdf$cd820
days = setdf$days
cens = setdf$cens
df = data.frame(F = race,
X1 = hemo,
X2 = homo,
X3 = drugs,
# X4 = age,
# X5 = weight,
# X6 = symptom,
# X8 = symptom,
# X6 = zprior,
# X10 = oprior,
A = A,
Y = Y)
W = df[,c(2:4,1)]
summary(setdf$cd496)
setwd("C:/Users/uus03/OneDrive/Desktop/ACTGdata/ACTG_minidata")
source("utils.R")
df = readRDS("simulated_data/df.rds")
summary(df$Y)
hist(df$Y)
data("ACTG175")
dforigin = ACTG175
setdf = dforigin[dforigin$r == 1,]
setdf[setdf$cd496 == 8,]
setdf[setdf$cd496 == 890,]
source("utils.R")
df = readRDS("simulated_data/df.rds")
W = readRDS("simulated_data/W.rds")
Opt = Weight.via.Opt(df, W, method="KR25", delta=0.001, delta_prime=10, gamma=0.01)
